<!doctype html><html lang=cn-zh><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta http-equiv=X-UA-Compatible content="IE=edge"><style type=text/css>body{font-family:monospace}</style><title>[Python]使用pipenv管理python虚拟环境</title>
<meta name=description content="A blog maintained by Vimiix."><link rel=stylesheet href=/css/style.css><script>var _hmt=_hmt||[];(function(){var e,t=document.createElement("script");t.src="https://hm.baidu.com/hm.js?7c24231917964240bae97e813810620c",e=document.getElementsByTagName("script")[0],e.parentNode.insertBefore(t,e)})()</script></head><body><header>====================<br>== Hi, I'm Vimiix ==<br>====================<div style=float:right;color:gray;font-size:x-large>Get hands dirty.</div><br><p><nav><a href=https://www.vimiix.com/><b>首页</b></a>.
<a href=/posts/><b>文章列表</b></a>.
<a href=/projects/><b>开源项目</b></a>.
<a href=/tags/><b>标签</b></a>.
<a href=/friends/><b>友链</b></a>.
<a href=/about/><b>关于我</b></a>.
<a href=/index.xml><b>RSS</b></a>.</nav></p></header><main><article><h1>[Python]使用pipenv管理python虚拟环境</h1><b><time>2018.03.11 18:20</time></b>
<a href=/tags/pipenv>pipenv</a>
<a href=/tags/autoenv>autoenv</a>
<a href=/tags/python>Python</a>
<a href=/tags/virtualenv>virtualenv</a><div><h2 id=前言>前言</h2><p>近期的项目中，我开始尝试着从 virtualenv 管理 python 虚拟环境，切换到用 pipenv 来管理。</p><p>经过一段时间的使用，着实觉得 pipenv 使用的更加顺手，更加的便捷。这当然也延续了 <a href=https://www.kennethreitz.org/>Kenneth</a> 大神一贯的项目作风&ndash; <strong><code>For Humans</code></strong> 。</p><p>再配合上 <strong><code>autoenv</code></strong>（自动激活虚拟环境的工具），更加的 Perfect！</p><h2 id=pipenv--autoenv-的使用>pipenv + autoenv 的使用</h2><h3 id=安装>安装</h3><p>我们通过<code>pip</code>即可快速安装</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>pip install autoenv  <span style=color:#75715e># 安装 autoenv</span>
</span></span><span style=display:flex><span>pip install pipenv <span style=color:#75715e>#  安装 pipenv</span>
</span></span></code></pre></div><p><em>注：这里简单略过安装部分，网上大把的教程有教如何在各个系统环境下安装，不是本文的主要内容</em></p><h3 id=pipenv-的使用>pipenv 的使用</h3><p><em>前提：假设我们在用户目录 <code>~</code> 下有一个项目叫 <code>my_project/</code></em></p><p>我们首先进入项目目录：</p><pre tabindex=0><code>cd  ~/my_project
</code></pre><p>进入项目以后，如果直接执行 <code>pipenv install</code>，<code>pipenv</code> 会根据系统默认的 python 版本，来创建虚拟环境。（前提是本项目中不存在已有的<code>Pipfile</code>，如果有，它会去根据<code>Pipfile</code>安装对应的版本和<code>Pipfile</code>中记录的依赖库）。</p><p>但是我们一般会创建虚拟环境的时候指定 python 版本,就需要配上 <code>--two</code>或者<code>--three</code> 这个参数:</p><ul><li>&ndash;two 使用 python2 来创建虚拟环境</li><li>&ndash;three 使用 python3 来创建虚拟环境</li></ul><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>pipenv install --three  <span style=color:#75715e># 需要确保系统中存在python3版本</span>
</span></span></code></pre></div><p>下面是执行后的输出信息：</p><pre tabindex=0><code>Creating a virtualenv for this project…
Using /usr/local/bin/python3 to create virtualenv…
# 这里可以看到继承自哪个python版本
⠋Running virtualenv with interpreter /usr/local/bin/python3 Using base prefix &#39;/usr/local&#39;
New python executable in /root/.local/share/virtualenvs/my_project-dhpIKgdN/bin/python3
Also creating executable in /root/.local/share/virtualenvs/my_project-dhpIKgdN/bin/python
Installing setuptools, pip, wheel...done.

# 这里可以看到虚拟环境安装的位置
Virtualenv location: /root/.local/share/virtualenvs/my_project-dhpIKgdN
Creating a Pipfile for this project…
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock (625834)!
Installing dependencies from Pipfile.lock (625834)…
  🐍   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 0/0 — 00:00:00
To activate this project&#39;s virtualenv, run the following:
 $ pipenv shell # 要激活该虚拟环境，执行这条指令
</code></pre><p>这将在项目目录中创建两个新文件 <code>Pipfile</code> 和 <code>Pipfile.lock</code></p><ul><li>Pipfile 存放着当前虚拟环境的配置信息，包含 python 版本，pypi 源，以及项目安装的依赖库。 - <code>pipenv</code>根据这个来寻找项目的根目录。 - <code>Pipfile</code> 文件是 <code>TOML</code> 格式而不是 <code>requirements.txt</code> 那样的纯文本。[1] - 一个项目对应一个 Pipfile，支持开发环境与正式环境区分。默认提供 <code>default</code> 和 <code>development</code> 区分</li><li>Pipfile.lock 顾名思义，这个文件时对于<code>Pipfile</code>的一个锁定。支持锁定项目不同的版本所依赖的环境.</li></ul><p>激活虚拟环境, 在当前目录执行下面的指令即可：</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>pipenv shell
</span></span></code></pre></div><h4 id=创建-env-文件>创建 .env 文件</h4><p>如果你和我一样想要使用 <code>autoenv</code> 来自动激活虚拟环境，就在当前项目的根目录下面，创建一个名为 <strong>.env</strong> 的文件，将 <code>pipenv shell</code> 写进去。具体使用在后面说明。</p><p>如果没有这个需求，可以忽略这一段话。</p><h3 id=更新-pypi-源来提高依赖库安装的速度>更新 pypi 源来提高依赖库安装的速度</h3><p>在使用 pipenv 的时候，常常会在安装的时候，一直卡在了 <code>Locking</code> 这里，通过加上 <code>-v</code> 参数，可以看到安装过程中的步骤信息，卡在了下载那里，这时应该可以意识到是因为网络的原因，pipenv 创建的 <code>Pipfile</code> 中默认的 pypi 源是 python 官方的 <strong><a href=https://pypi.python.org/simple>https://pypi.python.org/simple</a></strong>。我们国内用户访问下载的时候会很慢。</p><p>所以，我一般会在创建好 Pipfile 以后，修改到文件中 <code>source</code> 块下的 <code>url</code> 字段，设置为国内的 pypi 源就好了，我推荐的是清华的 pypi 源，具体设置如下：</p><h6 id=_备注我还没有找到如何修改能在创建时就设好的方法应该修改源码是可以的但这样不尊重源码毕竟高墙是我们自己筑起的如果有好的方法您不妨在评论中告诉我一下_><em>备注：我还没有找到如何修改能在创建时就设好的方法，应该修改源码是可以的，但这样不尊重源码，毕竟高墙是我们自己筑起的，如果有好的方法，您不妨在评论中告诉我一下</em></h6><pre tabindex=0><code>[[source]]

 url = &#34;https://pypi.tuna.tsinghua.edu.cn/simple&#34;
 verify_ssl = true
 name = &#34;pypi&#34;
</code></pre><h3 id=管理-python-依赖关系>管理 Python 依赖关系</h3><p><code>Pipfile</code> 包含关于项目的依赖包的信息，并取代通常在 Python 项目中使用的 <code>requirements.txt</code> 文件。 如果你之前的项目中存在<code>requirements.txt</code>文件，<code>pipenv</code> 可以很轻松的安装 <code>requirements.txt</code> 中的依赖包。</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>pipenv install -r requirements.txt
</span></span><span style=display:flex><span><span style=color:#75715e># 或者</span>
</span></span><span style=display:flex><span>pipenv install --requirements requirements.txt
</span></span></code></pre></div><p>可以通过更新 <code>Pipfile.lock</code> 来冻结软件包名称及其版本以及其自己的依赖关系的列表。 这时需要使用<code>lock</code>关键字来完成，</p><pre tabindex=0><code>pipenv lock
</code></pre><p>如果我们想要在虚拟环境中安装某个指定的库，比如 <code>requests</code>, 直接在 install 后面跟上就可以了:</p><pre tabindex=0><code>pipenv install requests
</code></pre><p>如果想查看当前环境中第三方包之间的依赖关系,可以通过 <code>pipenv graph</code> 来查看：</p><pre tabindex=0><code>[root@VM_27_243_centos my_project]# pipenv graph
requests==2.18.4
  - certifi [required: &gt;=2017.4.17, installed: 2018.1.18]
  - chardet [required: &lt;3.1.0,&gt;=3.0.2, installed: 3.0.4]
  - idna [required: &lt;2.7,&gt;=2.5, installed: 2.6]
  - urllib3 [required: &lt;1.23,&gt;=1.21.1, installed: 1.22]
</code></pre><p>从输出可以看出，我们按照的 <code>requests</code> 包，依赖于其他的四个包，pipenv 帮你自动管理着这些包这件的依赖关系、。我们可以看到 <code>requests</code> 依赖于 <code>urllib3</code>， 假设我们再安装一个包，并且这个包也同样依赖着 <code>urllib3</code> ,当我们要卸载掉 <code>requests</code> 的时候，pipenv 会自动检测这些包之间的依赖关系，因为 <code>urllib3</code> 依旧有其他包依赖，所以会保留，只会卸载掉其他的依赖库。（<em>卸载的指令是<code>pipenv uninstall</code></em>）</p><h3 id=退出虚拟环境>退出虚拟环境</h3><p>任何时候想退出虚拟环境，只需一条简单的 <code>exit</code> 指令即可</p><pre tabindex=0><code>exit
</code></pre><h3 id=autoenv-的使用>autoenv 的使用</h3><p>安装好 <code>autoenv</code> 以后，<code>autoenv</code> 可以在进入项目之后自动检测项目目录的 <code>.env</code> 文件激活项目所需的虚拟环境，这样能够保证每次切换不同项目的时候，都能自动进入相应项目所依赖的虚拟环境。</p><p>要实现 <code>autoenv</code> 自动识别项目目录中的 <code>.env</code> 文件，需要将 <code>autoenv</code> 的激活脚本添加到终端的 <code>profile</code> 中：</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span><span style=color:#75715e># bash 的话，执行这一条指令</span>
</span></span><span style=display:flex><span>echo <span style=color:#e6db74>&#34;source `which activate.sh`&#34;</span> &gt;&gt; ~/.bashrc
</span></span><span style=display:flex><span><span style=color:#75715e># zsh 的话，执行这一条指令</span>
</span></span><span style=display:flex><span>echo <span style=color:#e6db74>&#34;source `which activate.sh`&#34;</span> &gt;&gt; ~/.zshrc
</span></span></code></pre></div><p>这样就配置好了 <code>autoenv</code> 了，当 <code>cd</code> 到项目目录中后，就会自动激活虚拟环境了，如果是第一次，系统会提示你确认是否以后都自动激活，输入 <code>y</code> ，然后回车确认即可。</p><h2 id=supsup-pipenv-详细参数和指令说明sup2supsup3sup>* pipenv 详细参数和指令说明[2][3]</h2><h3 id=pipenv>pipenv</h3><pre tabindex=0><code>pipenv [OPTIONS] COMMAND [ARGS]...
</code></pre><p><strong>Options</strong>：</p><ul><li><p><strong>&ndash;upgrade</strong></p><pre><code>	更新pipenv＆pip到最新版本
</code></pre></li><li><p><strong>&ndash;where</strong></p><pre><code>	输出项目根目录信息
</code></pre></li><li><p><strong>&ndash;venv</strong></p><pre><code>	输出虚拟环境信息
</code></pre></li><li><p><strong>&ndash;py</strong></p><pre><code>	输出python解释器的信息
</code></pre></li><li><p><strong>&ndash;envs</strong></p><pre><code>	输出环境变量信息
</code></pre></li><li><p><strong>&ndash;rm</strong></p><pre><code>	删除当前虚拟环境
</code></pre></li><li><p><strong>&ndash;bare</strong></p><pre><code>	精简输出
</code></pre></li><li><p><strong>&ndash;man</strong></p><pre><code>	显示帮助手册页面
</code></pre></li><li><p><strong>&ndash;three, &ndash;two</strong></p><pre><code>	使用python3/2创建虚拟环境
</code></pre></li><li><p><strong>&ndash;python</strong> &lt;python></p><pre><code>	指定应该使用哪个版本的Python虚拟环境
</code></pre></li><li><p><strong>&ndash;site-packages</strong></p><pre><code>	为虚拟环境启用site-packages
</code></pre></li><li><p><strong>&ndash;version</strong></p><pre><code>	显示版本并退出
</code></pre></li></ul><h3 id=check>check</h3><p>检查装的包的安全性</p><pre tabindex=0><code>pipenv check [OPTIONS] [ARGS]...
</code></pre><p><strong>Options</strong>：</p><ul><li><p><strong>&ndash;three, &ndash;two</strong></p><pre><code>	使用python3/2创建虚拟环境
</code></pre></li><li><p><strong>&ndash;python</strong> &lt;python>
指定应该使用哪个版本的 Python 虚拟环境</p></li><li><p><strong>&ndash;system</strong></p><pre><code>	使用系统的Python
</code></pre></li><li><p><strong>&ndash;unused</strong> &lt;unused></p><pre><code>	指定项目路径，显示可能未使用的依赖关系。
</code></pre></li></ul><h3 id=clean>clean</h3><p>卸载未在 pipfile.lock 中指定的所有软件包</p><pre tabindex=0><code>pipenv clean [OPTIONS]
</code></pre><p><strong>Options</strong>:</p><ul><li><p><strong>-v，&ndash;verbose</strong>
详细信息模式</p></li><li><p><strong>&ndash;three, &ndash;two</strong></p><pre><code>	使用python3/2创建虚拟环境
</code></pre></li><li><p><strong>&ndash;python</strong> &lt;python>
指定应该使用哪个版本的 Python 虚拟环境</p></li><li><p><strong>&ndash;dry-run</strong></p><pre><code>	只输出不需要的包
</code></pre></li></ul><h3 id=graph>graph</h3><p>显示当前安装的依赖关系图信息</p><pre tabindex=0><code>pipenv graph [OPTIONS]
</code></pre><p><strong>Options</strong>:</p><ul><li><p><strong>&ndash;bare</strong></p><pre><code>	最小的输出 *(备注：这个不太理解，尝试过指定了这个参数会输出所有的包，不指定却只输出pip安装的包，感觉和官方注释相反)*
</code></pre></li><li><p><strong>&ndash;json</strong></p><pre><code>	输出JSON格式
</code></pre></li><li><p><strong>&ndash;reverse</strong></p><pre><code>	逆转依赖关系图
</code></pre></li></ul><h3 id=install>install</h3><p>安装参数提供的软件包并将它们添加到<strong>pipfile</strong>，如果没有提供参数，就安装所有软件包。</p><pre tabindex=0><code>pipenv install [OPTIONS] [PACKAGE_NAME] [MORE_PACKAGES]...
</code></pre><p><strong>Options</strong>:</p><ul><li><p><strong>-d, &ndash;dev</strong></p><pre><code>	在[dev-packages]中安装软件包
</code></pre></li><li><p><strong>&ndash;three, &ndash;two</strong>
使用 python3/2 创建虚拟环境</p></li><li><p><strong>&ndash;python</strong> &lt;python></p><pre><code>	指定应该使用哪个版本的Python虚拟环境
</code></pre></li><li><p><strong>&ndash;system</strong></p><pre><code>	系统pip管理
</code></pre></li><li><p><strong>-r, &ndash;requirements</strong> &lt;requirements></p><pre><code>	导入一个requirements.txt文件。
</code></pre></li><li><p><strong>-c, &ndash;code</strong> &lt;code></p><pre><code>	从代码库导入
</code></pre></li><li><p><strong>-v, &ndash;verbose</strong></p><pre><code>	详细信息模式
</code></pre></li><li><p><strong>&ndash;ignore-pipfile</strong></p><pre><code>	在安装时忽略pipfile，使用pipfile.lock
</code></pre></li><li><p><strong>&ndash;sequential</strong></p><pre><code>	一次只安装一个依赖项，而不是同时安装。
</code></pre></li><li><p><strong>&ndash;skip-lock</strong></p><pre><code>	相反，在安装时忽略锁定机制 - 使用pipfile
</code></pre></li><li><p><strong>&ndash;deploy</strong></p><pre><code>	如果pipfile.lock过时或python版本错误则中止
</code></pre></li><li><p><strong>&ndash;pre</strong></p><pre><code>	允许预发布
</code></pre></li><li><p><strong>&ndash;keep-outdated</strong></p><pre><code>	防止在pipfile.lock中更新过时的依赖关系
</code></pre></li><li><p><strong>&ndash;selective-upgrade</strong></p><pre><code>	更新指定的包
</code></pre></li></ul><p><strong>Arguments</strong>:</p><ul><li><p><strong>PACKAGE_NAME</strong>
包名（可选参数）</p></li><li><p><strong>MORE_PACKAGES</strong></p><pre><code>	多个包（可选参数）
</code></pre></li></ul><h3 id=lock>lock</h3><p>生成<strong>pipfile.lock</strong></p><pre tabindex=0><code>pipenv lock [OPTIONS]
</code></pre><p><strong>Options</strong>:</p><ul><li><p><strong>-v，&ndash;verbose</strong>
详细信息模式</p></li><li><p><strong>&ndash;three, &ndash;two</strong></p><pre><code>	使用python3/2创建虚拟环境
</code></pre></li><li><p><strong>&ndash;python</strong> &lt;python>
指定应该使用哪个版本的 Python 虚拟环境</p></li><li><p><strong>-r, &ndash;requirements</strong></p><pre><code>	生成与requirements.txt兼容的lock文件
</code></pre></li><li><p><strong>-d, &ndash;dev</strong></p><pre><code>	生成与requirements.txt兼容的开发模式依赖项
</code></pre></li><li><p><strong>&ndash;clear</strong></p><pre><code>	清除依赖关系缓存
</code></pre></li><li><p><strong>&ndash;pre</strong></p><pre><code>	允许预发布
</code></pre></li><li><p><strong>&ndash;keep-outdated</strong></p><pre><code>	防止在pipfile.lock中更新过时的依赖关系
</code></pre></li></ul><h3 id=open>open</h3><p>在编辑器中查看指定的模块</p><pre tabindex=0><code>pipenv open [OPTIONS] MODULE
</code></pre><p><strong>Options</strong>：</p><ul><li><p><strong>&ndash;three, &ndash;two</strong></p><pre><code>	使用python3/2创建虚拟环境
</code></pre></li><li><p><strong>&ndash;python</strong> &lt;python>
指定应该使用哪个版本的 Python 虚拟环境</p></li></ul><p><strong>MODULE</strong></p><p>模块名（必填项）</p><h3 id=run>run</h3><p>运行一个虚拟环境中的命令(就是在未激活虚拟环境时可以直接用虚拟环境的 python 执行）</p><pre tabindex=0><code>pipenv run [OPTIONS] COMMAND [ARGS]...
</code></pre><p><strong>Options</strong>:</p><ul><li><p><strong>&ndash;three, &ndash;two</strong></p><pre><code>	使用python3/2创建虚拟环境
</code></pre></li><li><p><strong>&ndash;python</strong> &lt;python>
指定应该使用哪个版本的 Python 虚拟环境</p></li></ul><p><strong>Arguments</strong></p><ul><li><p><strong>COMMAND</strong></p><pre><code>	命令（必填项）
</code></pre></li><li><p><strong>ARGS</strong></p><pre><code>	参数（可选项）
</code></pre></li></ul><h3 id=shell>shell</h3><p>在虚拟环境中产生一个 shell(就是激活虚拟环境)</p><pre tabindex=0><code>pipenv shell [OPTIONS] [SHELL_ARGS]...
</code></pre><p><strong>Options</strong>:</p><ul><li><p><strong>&ndash;three, &ndash;two</strong></p><pre><code>	使用python3/2创建虚拟环境
</code></pre></li><li><p><strong>&ndash;python</strong> &lt;python>
指定应该使用哪个版本的 Python 虚拟环境</p></li><li><p><strong>&ndash;fancy</strong></p><pre><code>	以好看的模式运行shell（用于如果优化过配置的shell）
</code></pre></li><li><p><strong>&ndash;anyway</strong></p><pre><code>	产生一个子shell，即使已经在虚拟环境中

	*这个比较很少用，但就是虚拟环境中的虚拟环境，执行后在终端前面看到两个虚拟环境的括号：*

	```
	(my_project-dhpIKgdN) (my_project-dhpIKgdN) [root@centos my_project]#
	```
</code></pre></li></ul><p><strong>Arguments</strong>:</p><ul><li><strong>SHELL_ARGS</strong>
可选项</li></ul><h3 id=sync>sync</h3><p>安装所有在 pipfile.lock 中指定的软件包</p><pre tabindex=0><code>pipenv sync [OPTIONS]
</code></pre><p><strong>Options</strong>:</p><ul><li><p><strong>-v，&ndash;verbose</strong>
详细信息模式</p></li><li><p><strong>-d, &ndash;dev</strong></p><pre><code>	另外在[dev-packages]中安装软件包
</code></pre></li><li><p><strong>&ndash;three, &ndash;two</strong></p><pre><code>	使用python3/2创建虚拟环境
</code></pre></li><li><p><strong>&ndash;python</strong> &lt;python>
指定应该使用哪个版本的 Python 虚拟环境</p></li><li><p><strong>&ndash;bare</strong></p><pre><code>	精简输出
</code></pre></li><li><p><strong>&ndash;clear</strong></p><pre><code>	清除依赖关系缓存
</code></pre></li><li><p><strong>&ndash;sequential</strong></p><pre><code>	一次只安装一个依赖项，而不是同时安装
</code></pre></li></ul><h3 id=uninstall>uninstall</h3><p>卸载指定的软件包并将其从<strong>pipfile</strong>中删除</p><pre tabindex=0><code>pipenv uninstall [OPTIONS] [PACKAGE_NAME] [MORE_PACKAGES]...
</code></pre><p><strong>Options</strong>:</p><ul><li><p><strong>-v，&ndash;verbose</strong>
详细信息模式</p></li><li><p><strong>&ndash;three, &ndash;two</strong></p><pre><code>	使用python3/2创建虚拟环境
</code></pre></li><li><p><strong>&ndash;python</strong> &lt;python>
指定应该使用哪个版本的 Python 虚拟环境</p></li><li><p><strong>&ndash;system</strong></p><pre><code>	系统的pip管理
</code></pre></li><li><p><strong>&ndash;lock</strong>
卸载之后锁定</p></li><li><p><strong>&ndash;all-dev</strong></p><pre><code>	从[dev-packages]中卸载所有软件包
</code></pre></li><li><p><strong>&ndash;all</strong></p><pre><code>	从虚拟环境中清除所有包。但不会编辑pipfile
</code></pre></li><li><p><strong>&ndash;keep-outdated</strong></p><pre><code>	防止在pipfile.lock中更新过时的依赖关系
</code></pre></li></ul><p><strong>Arguments</strong>:</p><ul><li><p><strong>PACKAGE_NAME</strong>
包名（可选参数）</p></li><li><p><strong>MORE_PACKAGES</strong></p><pre><code>	多个包（可选参数）
</code></pre></li></ul><h3 id=update>update</h3><p>更新指定包</p><pre tabindex=0><code>pipenv update [OPTIONS] [PACKAGES]...
</code></pre><p><strong>Options</strong>:</p><ul><li><p><strong>-d, &ndash;dev</strong></p><pre><code>	在[dev-packages]中安装软件包
</code></pre></li><li><p><strong>&ndash;three, &ndash;two</strong>
使用 python3/2 创建虚拟环境</p></li><li><p><strong>&ndash;python</strong> &lt;python></p><pre><code>	指定应该使用哪个版本的Python虚拟环境
</code></pre></li><li><p><strong>-v, &ndash;verbose</strong></p><pre><code>	详细信息模式
</code></pre></li><li><p><strong>&ndash;clear</strong></p><pre><code>	清除依赖关系缓存
</code></pre></li><li><p><strong>&ndash;bare</strong></p><pre><code>	精简输出
</code></pre></li><li><p><strong>&ndash;pre</strong></p><pre><code>	允许预发布
</code></pre></li><li><p><strong>&ndash;keep-outdated</strong></p><pre><code>	防止在pipfile.lock中更新过时的依赖关系
</code></pre></li><li><p><strong>&ndash;sequential</strong></p><pre><code>	一次只安装一个依赖项，而不是同时安装
</code></pre></li><li><p><strong>&ndash;outdated</strong></p><pre><code>	列出过时的依赖关系
</code></pre></li><li><p><strong>&ndash;dry-run</strong></p><pre><code>	列出过时的依赖关系
</code></pre></li></ul><h3 id=参考链接>参考链接：</h3><p>[1] : <a href=http://www.dongwm.com/archives/%E4%BD%BF%E7%94%A8pipenv%E7%AE%A1%E7%90%86%E4%BD%A0%E7%9A%84%E9%A1%B9%E7%9B%AE/>使用 pipenv 管理你的项目 &ndash; 董伟明</a></p><p>[2] :<a href=https://docs.pipenv.org/>Pipenv: Python Dev Workflow for Humans</a></p><p>[3] :<a href=https://pypi.python.org/pypi/pipenv>https://pypi.python.org/pypi/pipenv</a></p></div></article></main><aside><div><div><h3>LATEST POSTS</h3></div><div><ul><li><a href=/posts/2025-10-16-kubernetes-apiserver-authorization-mechanism/>Kubernetes APIServer 鉴权机制</a></li><li><a href=/posts/2025-09-30-kubernetes-apiserver-authentication-mechanism/>Kubernetes APIServer 认证机制</a></li><li><a href=/posts/2024-12-16-deploy-kubernetes-by-kubeadm/>使用 kubeadm 搭建 kubernetes 集群</a></li><li><a href=/posts/2024-09-20-how-to-code-review/>如何做code review</a></li><li><a href=/posts/2024-08-12-weakref-in-python/>Python中的弱引用</a></li></ul></div></div></aside><footer><p>Social Links:
<a href=https://github.com/vimiix><b>Github</b></a>.
<a href=https://www.douban.com/people/vimiix/><b>Douban</b></a>.
<a href=mailto:i@vimiix.com><b>Email</b></a>.<br><hr>&copy; 2017-2025
Vimiix Yao; All rights reserved.
<a href=https://beian.miit.gov.cn/>京ICP备19015214号-1</a></p><script src=https://l2dwidget.js.org/lib/L2Dwidget.min.js></script><script>L2Dwidget.init({model:{jsonPath:"https://unpkg.com/live2d-widget-model-tororo@1.0.5/assets/tororo.model.json"}})</script></footer></body></html>